package cn.itcast.zt.controller;

import cn.itcast.zt.annos.ApiServer;
import cn.itcast.zt.api.IUserApi;
import cn.itcast.zt.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

/**
 * created by zhangtian on 2018/7/9
 */
@RestController
public class TestController {
    // 直接注入定义的接口
    @Autowired(required = false)
    private IUserApi iUserApi ;

    @GetMapping
    public void test(){
        // 测试信息提取
        // 不订阅，不会实际发出请求，但会进入到我们的代理类
//        iUserApi.getAllUser() ;
//        iUserApi.getUserById("111111111") ;
//        iUserApi.deleteUserById("111222222222") ;
//        iUserApi.createUser(Mono.just(User.builder().name("dad").age(22).build())) ;


        // 直接调用，实现调用rest接口的效果
//        Flux<User> users = iUserApi.getAllUser() ;
//        users.subscribe(System.out::println) ;

        String id = "111111111111112345" ;
        iUserApi.getUserById(id).subscribe(user->{
            System.out.println("getUserById:"+user);
        },e->{
            System.out.println("找不到用户："+e.getMessage());
        }) ;

        iUserApi.deleteUserById(id).subscribe() ;

        // 创建用户
        // userApi.createUser(
        // Mono.just(User.builder().name("晓风轻").age(33).build()))
        // .subscribe(System.out::println);
    }
}
